﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;

namespace Jurassic_Island 
{

    public class CADEventosGuion
    {
        static private String cadenaConexion = ConfigurationManager.ConnectionStrings["JurassicBDConnectionString"].ConnectionString;
        SqlConnection conexion;
        DataSet dsEvguion;
        SqlDataAdapter sqldaEvguion;

        public CADEventosGuion()//constructor por defecto sin nada
        {

        }

        public DataSet ObtenerTablaEventosGuion()//obtiene la tabla de los eventos de guion
        {
            DataSet dsEventosGuion = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select id_evguion as 'ID', nombre_evguion as 'Nombre', descripcion_evguion as 'Descripcion' from Eventos_Guion";
                SqlDataAdapter daEventosGuion = new SqlDataAdapter(consulta, conexion);
                daEventosGuion.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daEventosGuion.Fill(dsEventosGuion, "Eventos_Guion");
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return dsEventosGuion;
        }

        public string InsertarEventosGuion(int id_evguion, string nombre_evguion, string descripcion_evguion)//metodo que inserta eventos de guion en la base de datos
        {
            string retorno = "";
            try
            {
                conexion = new SqlConnection(cadenaConexion);
                sqldaEvguion = new SqlDataAdapter("select * from Eventos_Guion", conexion);
                dsEvguion = new DataSet();
                sqldaEvguion.Fill(dsEvguion, "Eventos_Guion");
                DataTable t = new DataTable();
                t = dsEvguion.Tables["Eventos_Guion"];
                DataRow nuevafila = t.NewRow();
                nuevafila[1] = nombre_evguion;
                nuevafila[2] = descripcion_evguion;
                t.Rows.Add(nuevafila);
                SqlCommandBuilder cbuilder = new SqlCommandBuilder(sqldaEvguion);
                if (sqldaEvguion.Update(dsEvguion, "Eventos_Guion") == 0) //si el nº d filas actualizadas correctamente no es 0
                    retorno = "ERROR al insertar";
            }
            catch (SqlException sqlEx)
            {
                return "ERROR relacionado con la base de datos.\nDetalles:\n" + sqlEx.Message;
            }
            catch (Exception ex)
            {
                return "ERROR al intentar insertar un evento de localización.\nDetalles:\n" + ex.Message;
            }
            
            return retorno;
        }

        public DataSet EditarTablaEventosGuion(string nombre, string descripcion)//edita la tabla de eventos d guion
        {
            DataSet dsEventosGuion = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "update Eventos_Guion set nombre_evguion='" + nombre + "', descripcion_evguion=" + descripcion + "' where nombre_evguion='" + nombre + "';";
                SqlDataAdapter daEventosGuion = new SqlDataAdapter(consulta, conexion);
                daEventosGuion.Fill(dsEventosGuion, "Eventos_Guion");
            }

            catch (Exception ex)
            {
                throw (ex);
            }

            return dsEventosGuion;
        }

        public DataSet BuscarEventosGuion(string nombre)
        {
            DataSet dsEventosGuion = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select id_evguion as 'ID', nombre_evguion as 'Nombre', descripcion_evguion as 'Descripcion' from Eventos_Guion where nombre_evguion like '%" + nombre + "%';";
                SqlDataAdapter daEventosGuion = new SqlDataAdapter(consulta, conexion);

                daEventosGuion.Fill(dsEventosGuion, "Eventos_Guion");
            }

            catch (Exception ex)
            {
                throw (ex);
            }

            return dsEventosGuion;
        }

        public DataSet BorrarEventosGuion(string nombre)
        {
            DataSet dsEventosGuion = new DataSet();
            
            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "delete from Eventos_Guion where nombre_evguion like '" + nombre + "';";
                SqlDataAdapter daEventosGuion = new SqlDataAdapter(consulta, conexion);

                daEventosGuion.Fill(dsEventosGuion, "Eventos_Guion");
            }

            catch (Exception ex)
            {
                throw (ex);
            }
            return dsEventosGuion;
        }

        public DataSet ObtenerNombreEventosGuion()
        {
            DataSet dsEventosGuion = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select nombre_evguion as 'Nombre' from Eventos_Guion;";
                SqlDataAdapter daEventosGuion = new SqlDataAdapter(consulta, conexion);
                daEventosGuion.Fill(dsEventosGuion, "Eventos_Guion");
            }

            catch (Exception ex)
            {
                throw (ex);
            }
            return dsEventosGuion;
        }

        public bool ActualizarEventosGuion(DataSet dsEventosGuion)//actualiza los eventos q ya habian en la base de datos
        {
            bool resultado = false;

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select id_evguion as 'ID', nombre_evguion as 'Nombre', descripcion_evguion as 'Descripcion' from Eventos_Guion";
                SqlDataAdapter daEventosGuion = new SqlDataAdapter(consulta, conexion);
                SqlCommandBuilder cb = new SqlCommandBuilder(daEventosGuion);
                cb.ConflictOption = ConflictOption.OverwriteChanges;
               // daEventosGuion.UpdateCommand = cb.GetUpdateCommand();
                daEventosGuion.Update(dsEventosGuion, "Eventos_Guion");
                dsEventosGuion.Tables["Eventos_Guion"].AcceptChanges();

                resultado = true;
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }
         
    }

}
